Skip to content

Fix fr resolution for referenced radial gradients - #1098

Merged
wmedrano merged 1 commit into
linebender:mainfrom
T1mVo:fix-fr-ref
Jul 21, 2026
Merged

Fix fr resolution for referenced radial gradients#1098
wmedrano merged 1 commit into
linebender:mainfrom
T1mVo:fix-fr-ref

Conversation

@T1mVo

@T1mVo T1mVo commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

The resolve_rg_attr function resolves gradient attributes via href links, but was missing AId::Fr from the coordinate attribute match arm. While Cx, Cy, R, Fx, and Fy were all handled, Fr was overlooked.

When a radial gradient references another via href , the fr attribute on the base gradient was never resolved, silently falling back to 0. This caused the focal radius to be ignored, making the gradient render as if fr="0" regardless of the actual value.

Example

<svg viewBox="0 0 100 100" width="100pt" height="100pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs>
    <radialGradient id="base" spreadMethod="pad" gradientUnits="userSpaceOnUse" cx="0.5" cy="0.5" r="0.5" fx="0.5" fy="0.5" fr="0.4">
      <stop offset="0%" stop-color="red"/>
      <stop offset="100%" stop-color="blue"/>
    </radialGradient>
    <radialGradient gradientTransform="scale(100)" id="ref" href="#base" xlink:href="#base"/>
  </defs>
  <rect width="100" height="100" fill="url(#ref)"/>
</svg>

The fr="0.4" on the base gradient was ignored.

When a `<radialGradient>` references another gradient via `href`, the
`resolve_rg_attr` function was missing `AId::Fr` in its coordinate
attribute match arm. This caused `fr` to silently fall back to 0
instead of being inherited from the base gradient, making radial
gradients with focal radius render incorrectly after `href` resolution.
@wmedrano
wmedrano merged commit 3fe0c34 into linebender:main Jul 21, 2026
5 checks passed
renovate Bot added a commit to gwennlbh/shapemaker that referenced this pull request Aug 9, 2026
##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31)

This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API.

The big change in this release is that text support is now backed by
[`skrifa`](https://github.com/googlefonts/fontations) and
[`harfrust`](https://github.com/harfbuzz/harfrust) rather than
[`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and
[`rustybuzz`](https://github.com/harfbuzz/rustybuzz):

- Moves resvg onto an actively maintained font stack.
- Should have faster and more correct text rendering.
- Will enable further improvements to things like variable font rendering in future.
- May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree).
- May result in small rendering changes compared to older versions of resvg.

##### Added

- New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout))
- Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011))
- A `Display` implementation for `Units`. ([#986](linebender/resvg#986))

##### Changed

- MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`.
- Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns))
- Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991))

##### Fixed

- Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon))
- Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon))
- Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5))
- Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon))
- `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo))
- Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007))
- Application of `transform` (and other group properties like `opacity`) on a nested `svg`
  element.
- The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045))
- The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099))
- The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015))
- Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052))
- Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989))
##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05)

This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API.

##### Added

- Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano))
- Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker))

##### Changed

- `tiny-skia` has a major version bump from 0.11 to 0.12.
renovate Bot added a commit to gwennlbh/vgvf that referenced this pull request Aug 9, 2026
##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31)

This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API.

The big change in this release is that text support is now backed by
[`skrifa`](https://github.com/googlefonts/fontations) and
[`harfrust`](https://github.com/harfbuzz/harfrust) rather than
[`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and
[`rustybuzz`](https://github.com/harfbuzz/rustybuzz):

- Moves resvg onto an actively maintained font stack.
- Should have faster and more correct text rendering.
- Will enable further improvements to things like variable font rendering in future.
- May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree).
- May result in small rendering changes compared to older versions of resvg.

##### Added

- New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout))
- Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011))
- A `Display` implementation for `Units`. ([#986](linebender/resvg#986))

##### Changed

- MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`.
- Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns))
- Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991))

##### Fixed

- Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon))
- Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon))
- Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5))
- Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon))
- `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo))
- Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007))
- Application of `transform` (and other group properties like `opacity`) on a nested `svg`
  element.
- The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045))
- The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099))
- The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015))
- Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052))
- Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989))
##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05)

This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API.

##### Added

- Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano))
- Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker))

##### Changed

- `tiny-skia` has a major version bump from 0.11 to 0.12.
renovate Bot added a commit to gwennlbh/shapemaker that referenced this pull request Aug 9, 2026
##### [v0.48.1](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0481-2026-08-02)

This release has an MSRV of 1.85.0 for `usvg` and `resvg` and the C API.

##### Changed

- MSRV lowered from 1.89 to 1.85. ([#1109](linebender/resvg#1109))
- Downgraded strict-num dependency to 0.1.1. This prevents duplicate versions from being included ([#1110](linebender/resvg#1110))

##### Fixed

- Fixed an `as_mut_slice` future-compatibility warning. ([#1108](linebender/resvg#1108))
##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31)

This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API.

The big change in this release is that text support is now backed by
[`skrifa`](https://github.com/googlefonts/fontations) and
[`harfrust`](https://github.com/harfbuzz/harfrust) rather than
[`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and
[`rustybuzz`](https://github.com/harfbuzz/rustybuzz):

- Moves resvg onto an actively maintained font stack.
- Should have faster and more correct text rendering.
- Will enable further improvements to things like variable font rendering in future.
- May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree).
- May result in small rendering changes compared to older versions of resvg.

##### Added

- New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout))
- Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011))
- A `Display` implementation for `Units`. ([#986](linebender/resvg#986))

##### Changed

- MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`.
- Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns))
- Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991))

##### Fixed

- Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon))
- Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon))
- Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5))
- Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon))
- `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo))
- Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007))
- Application of `transform` (and other group properties like `opacity`) on a nested `svg`
  element.
- The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045))
- The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099))
- The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015))
- Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052))
- Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989))
##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05)

This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API.

##### Added

- Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano))
- Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker))

##### Changed

- `tiny-skia` has a major version bump from 0.11 to 0.12.
renovate Bot added a commit to gwennlbh/vgvf that referenced this pull request Aug 9, 2026
##### [v0.48.1](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0481-2026-08-02)

This release has an MSRV of 1.85.0 for `usvg` and `resvg` and the C API.

##### Changed

- MSRV lowered from 1.89 to 1.85. ([#1109](linebender/resvg#1109))
- Downgraded strict-num dependency to 0.1.1. This prevents duplicate versions from being included ([#1110](linebender/resvg#1110))

##### Fixed

- Fixed an `as_mut_slice` future-compatibility warning. ([#1108](linebender/resvg#1108))
##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31)

This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API.

The big change in this release is that text support is now backed by
[`skrifa`](https://github.com/googlefonts/fontations) and
[`harfrust`](https://github.com/harfbuzz/harfrust) rather than
[`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and
[`rustybuzz`](https://github.com/harfbuzz/rustybuzz):

- Moves resvg onto an actively maintained font stack.
- Should have faster and more correct text rendering.
- Will enable further improvements to things like variable font rendering in future.
- May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree).
- May result in small rendering changes compared to older versions of resvg.

##### Added

- New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout))
- Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011))
- A `Display` implementation for `Units`. ([#986](linebender/resvg#986))

##### Changed

- MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`.
- Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns))
- Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991))

##### Fixed

- Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon))
- Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon))
- Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5))
- Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon))
- `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo))
- Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007))
- Application of `transform` (and other group properties like `opacity`) on a nested `svg`
  element.
- The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045))
- The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099))
- The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015))
- Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052))
- Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989))
##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05)

This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API.

##### Added

- Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano))
- Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker))

##### Changed

- `tiny-skia` has a major version bump from 0.11 to 0.12.
@yisibl

yisibl commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Could you add a test case?

@T1mVo

T1mVo commented Aug 11, 2026

Copy link
Copy Markdown
Contributor Author

@yisibl Here you go #1123

nicoburns pushed a commit that referenced this pull request Aug 13, 2026
renovate Bot added a commit to gwennlbh/shapemaker that referenced this pull request Aug 26, 2026
##### [v0.48.1](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0481-2026-08-02)

This release has an MSRV of 1.85.0 for `usvg` and `resvg` and the C API.

##### Changed

- MSRV lowered from 1.89 to 1.85. ([#1109](linebender/resvg#1109))
- Downgraded strict-num dependency to 0.1.1. This prevents duplicate versions from being included ([#1110](linebender/resvg#1110))

##### Fixed

- Fixed an `as_mut_slice` future-compatibility warning. ([#1108](linebender/resvg#1108))
##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31)

This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API.

The big change in this release is that text support is now backed by
[`skrifa`](https://github.com/googlefonts/fontations) and
[`harfrust`](https://github.com/harfbuzz/harfrust) rather than
[`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and
[`rustybuzz`](https://github.com/harfbuzz/rustybuzz):

- Moves resvg onto an actively maintained font stack.
- Should have faster and more correct text rendering.
- Will enable further improvements to things like variable font rendering in future.
- May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree).
- May result in small rendering changes compared to older versions of resvg.

##### Added

- New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout))
- Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011))
- A `Display` implementation for `Units`. ([#986](linebender/resvg#986))

##### Changed

- MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`.
- Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns))
- Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991))

##### Fixed

- Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon))
- Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon))
- Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5))
- Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon))
- `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo))
- Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007))
- Application of `transform` (and other group properties like `opacity`) on a nested `svg`
  element.
- The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045))
- The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099))
- The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015))
- Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052))
- Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989))
##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05)

This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API.

##### Added

- Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano))
- Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker))

##### Changed

- `tiny-skia` has a major version bump from 0.11 to 0.12.
renovate Bot added a commit to gwennlbh/vgvf that referenced this pull request Aug 26, 2026
##### [v0.48.1](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0481-2026-08-02)

This release has an MSRV of 1.85.0 for `usvg` and `resvg` and the C API.

##### Changed

- MSRV lowered from 1.89 to 1.85. ([#1109](linebender/resvg#1109))
- Downgraded strict-num dependency to 0.1.1. This prevents duplicate versions from being included ([#1110](linebender/resvg#1110))

##### Fixed

- Fixed an `as_mut_slice` future-compatibility warning. ([#1108](linebender/resvg#1108))
##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31)

This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API.

The big change in this release is that text support is now backed by
[`skrifa`](https://github.com/googlefonts/fontations) and
[`harfrust`](https://github.com/harfbuzz/harfrust) rather than
[`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and
[`rustybuzz`](https://github.com/harfbuzz/rustybuzz):

- Moves resvg onto an actively maintained font stack.
- Should have faster and more correct text rendering.
- Will enable further improvements to things like variable font rendering in future.
- May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree).
- May result in small rendering changes compared to older versions of resvg.

##### Added

- New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout))
- Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011))
- A `Display` implementation for `Units`. ([#986](linebender/resvg#986))

##### Changed

- MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`.
- Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns))
- Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991))

##### Fixed

- Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon))
- Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon))
- Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5))
- Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon))
- `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo))
- Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007))
- Application of `transform` (and other group properties like `opacity`) on a nested `svg`
  element.
- The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045))
- The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099))
- The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015))
- Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052))
- Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989))
##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05)

This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API.

##### Added

- Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano))
- Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker))

##### Changed

- `tiny-skia` has a major version bump from 0.11 to 0.12.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants